package com.kgc.scd.service;

import com.kgc.scd.bean.ShopCart;
import com.kgc.scd.util.PageSupport;
import com.kgc.scd.vo.ShopCartVO;
import com.kgc.scd.vo.ShopGoodsVO;
import io.swagger.models.auth.In;

import java.util.List;
import java.util.Map;

/**
 * Created On : 2022/11/16 0016.
 * <p>
 * Author : shiguangchuan
 * <p>
 * Description: 购物车业务接口
 */
public interface ShopCartService {
    
    /**
     * @author : shiguangchuan
     * @date   : 2022/11/16 0016
     * @param  : [userId, goodsId, cartNumber]
     * @return : boolean
     * @description : 添加商品到购物车 
     */
    boolean insertShopCart(String userId, String goodsId, Integer cartNumber);

    /**
     * @author : shiguangchuan
     * @date   : 2022/11/16 0016
     * @param  : [userId, goodsId, cartNumber]
     * @return : boolean
     * @description : 修改购物车的单品数量
     */
    boolean updateShopCartNumber(String userId, String goodsId, Integer cartNumber);

    /**
     * @author : shiguangchuan
     * @date   : 2022/11/16 0016
     * @param  : [ids]
     * @return : boolean
     * @description : 删除购物车内商品，单个或多个删除，全部删除
     */
    boolean deleteOneOrMoreCartByIds(List<String> ids);
    
    /**
     * @author : shiguangchuan
     * @date   : 2022/11/16 0016
     * @param  : [userId]
     * @return : boolean
     * @description : 删除购物车的全部商品信息 
     */
    boolean deleteAllCartByUserId(String userId);

    /**
     * @author : shiguangchuan
     * @date   : 2022/11/16 0016
     * @param  : [id]
     * @return : void
     * @description : 更改购物车是否勾选的状态(异步执行) 
     */
    void updateCartStatus(String id);

    /**
     * @author : shiguangchuan
     * @date   : 2022/11/16 0016
     * @param  : [userId]
     * @return : void
     * @description : 根据用户id来进行购物车选中状态的更改操作 
     */
    void updateAllCartStatus(String userId,Integer allStatus);
    
    /**
     * @author : shiguangchuan
     * @date   : 2022/11/16 0016
     * @param  : [userId]
     * @return : java.lang.Double
     * @description : 计算勾选的总价 
     */
    Double getSumCart(String userId);
    
    /**
     * @author : shiguangchuan
     * @date   : 2022/11/17 0017
     * @param  : [pageNo, pageSize, userId]
     * @return : com.kgc.scd.util.PageSupport<java.util.Map<com.kgc.scd.vo.ShopCartVO,com.kgc.scd.vo.ShopGoodsVO>>
     * @description : 购物车页面信息展示
     */
    //Map<String, ShopGoodsVO> getCartList(Integer pageNo,Integer pageSize,String userId);
    //PageSupport<Map<String,ShopGoodsVO>> getCartList(Integer pageNo,Integer pageSize,String userId);
    PageSupport<List<ShopCartVO>> getCartList(Integer pageNo,Integer pageSize,String userId);

    /**
     * @author : shiguangchuan
     * @date   : 2022/11/22
     * @param  : [userId]
     * @return : java.lang.Integer
     * @description : 根据用户id查询购物车数量
     */
    Long getCartCount(String userId);

}
